{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "sys.path.append(\"../\")\n",
    "from initial_dataSet import DataSet\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.cluster import KMeans\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import torch\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "save_list = ('a0910/', 'a2017/', 'junyi/', 'math_ec/')\n",
    "dataSet_list = ('ASSIST_0910', 'ASSIST_2017','JUNYI', 'MathEC')\n",
    "models=['DINA','NCD','CDGK','CICDM-A','CICDM']\n",
    "x_label=['poor','medium','good','excellent']\n",
    "model_data={}\n",
    "for model in models:\n",
    "    data_list=[]\n",
    "    for dataName in dataSet_list:\n",
    "        data=[]\n",
    "        data_i=pd.read_csv('./output/cluster/'+model+'/'+dataName+'_cluster.csv')\n",
    "        a=data_i.loc[:,['cluster','mean proficiency']]\n",
    "\n",
    "        for j in range(4):\n",
    "            data.append(a[a['cluster']==j]['mean proficiency'].to_list())\n",
    "\n",
    "        data_list.append(data)\n",
    "    model_data[model]=data_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 720x864 with 20 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_label=['ASSIST0910','ASSIST2017','JunYi','MathEC']\n",
    "titles=['DINA','NCDM','CDGK','ICD-A','ICD+']\n",
    "x_label=['poor','medium','good','excellent']\n",
    "\n",
    "plt.rcParams['xtick.direction'] = 'in'\n",
    "plt.rcParams['ytick.direction'] = 'in'\n",
    "\n",
    "fig,axes = plt.subplots(4,5,sharey=True,figsize=(10,12))\n",
    "plt.subplots_adjust(wspace=0.09,hspace=0.08)\n",
    "\n",
    "\n",
    "for j in range(5): # 模型\n",
    "    data_j=model_data[models[j]]\n",
    "    for i in range(4): # 数据集\n",
    "        data_i=data_j[i]\n",
    "        # axes[i,j].set_ylim((0.0,1.0))\n",
    "        axes[i,j].grid(axis='y',linestyle = '-',zorder=0)\n",
    "        axes[i,j].boxplot(data_i,labels=x_label,showfliers=False)\n",
    "        axes[i,j].set_xticklabels([])\n",
    "        axes[i,j].set_yticks(np.array([0,0.2,0.4,0.6,0.8,1]))\n",
    "        axes[i,j].set_yticklabels(np.array([0,0.2,0.4,0.6,0.8,1]),\n",
    "            fontdict={'family':'Times New Roman', 'size': 12})\n",
    "        if j==0:    \n",
    "            axes[i,j].set_ylabel(y_label[i],fontdict={'family':'Times New Roman', 'size': 15})\n",
    "        else:\n",
    "            axes[i,j].set_ylabel(None)\n",
    "        if i==0:\n",
    "            axes[i,j].set_title(titles[j],fontdict={'family':'Times New Roman', 'size': 15})\n",
    "        if i==3:\n",
    "            axes[i,j].set_xticks([1,2,3,4])\n",
    "            axes[i,j].set_xticklabels(x_label,rotation=20,\n",
    "                fontdict={'family':'Times New Roman', 'size': 11})\n",
    "\n",
    "fig.savefig('./output/box.jpg',dpi=1200,bbox_inches='tight')  \n",
    "plt.show()  "
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "527a93331b4b1a8345148922acc34427fb7591433d63b66d32040b6fbbc6d593"
  },
  "kernelspec": {
   "display_name": "Python 3.8.12 ('pytorch')",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.13"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
